﻿//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
// 프로그램 명		: frmCreateParts.cs
// 프로그램 기능		: Parts를 생성하는 창
// 클래스 기능		: 
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 개발자			: 김승현, 조범준
// 개발일			: 2014-08-06
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// F/W 버전		    : Dot NET Compack Framework 4.0 Service Pack 1 Patch
// 라이센스			: Copyright ⓒ 2014-2014 All rights reserved.
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 명명규칙			: 클래스(class) 명				- "c" + 클래스명
//					  전역(private) 상수			- "MC_" + 상수명
//					  공용(public)  상수			- "PC_" + 상수명
//					  전역(private) 변수/객체/핸들/구조체/컬렉션/델리게이트
//													- "mv_" + 타입/obj_/hwnd_/stru_/coll_/del_ + 명
//					  공용(public)  변수/객체/핸들/구조체/컬렉션/델리게이트/이벤트
//													- "pv_" + 타입/obj_/hwnd_/stru_/coll_/del_/evnt_ + 명
//					  공용(public)  속성(Property)	- "pp_" + 타입 + 속성명
//					  전역(private) 함수/API		- "mf_" + 함수명/API 함수명
//					  공용(public)  함수/API		- "pf_" + 함수명/API 함수명
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
// 개발자는 개발/수정시 위의 내용을 반드시 작성하며 내용이 일치하지 않을때에는 모든 사항을 개발자가 책임 진다.
//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
namespace TimsXBX
{
	///▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
	/// <summary>frmCreateParts 클래스</summary>
	///▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
	public partial class frmCreateParts : Form
	{
		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [생성자/소멸자]
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>생성자</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		public frmCreateParts(frmMain oFrmMain, frmProjects frmProjects, string sJobMode, string sProjectsCID, string sProjectsOID)
		{
			InitializeComponent();

			this.mv_frmProjects = frmProjects;
			this.mv_sParentCID = sProjectsCID;
			this.mv_sParentOID = sProjectsOID;
			this.txtSpName.Text = "SP_PROJECTS_RELATEDPARTS_CUD";
			this.txtJobMode.Text = sJobMode;
		}
		//public frmCreateParts(frmMain oFrmMain, frmParts frmParts, string sJobMode, string sPartsCID, string sPartsOID)
		//{
		//    InitializeComponent();

		//    this.mv_frmMain = oFrmMain;
		//    this.mv_frmParts = frmParts;
		//    this.mv_sParentCID = sPartsCID;
		//    this.mv_sParentOID = sPartsOID;
		//    this.txtSpName.Text = "SP_PARTS_BOM_CUD";
		//    this.txtJobMode.Text = sJobMode;
		//}
		public frmCreateParts(frmMain oFrmMain, frmParts frmParts, string sJobMode, string sPartsCID, string sPartsOID, DataGridView oDataGridView)
		{
			InitializeComponent();

			this.mv_frmParts = frmParts;
			this.mv_sParentCID = sPartsCID;
			this.mv_sParentOID = sPartsOID;
			this.txtSpName.Text = "SP_PARTS_BOM_CUD";
			this.txtJobMode.Text = sJobMode;
			this.mv_oDataGridView = oDataGridView;
		}
		public frmCreateParts(frmMain fMain)
		{
			InitializeComponent();
		}
		public frmCreateParts()
		{
			InitializeComponent();
			mf_Init(this);
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>소멸자</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		~frmCreateParts()
		{
			mf_UnInit(this);
		}
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [전역(private) 상수 - 클래스 내부만 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 상수명 첫 문자는 "MC_" 로 시작
		//         - 전체를 영문 대문자로 하고 상수명이 긴 경우 '_'로 구분해서 명명
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		///<summary>전역(private) 상수 선언 예</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private const string MC_HELLO = "Hello...";
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [공용(public) 상수 - 클래스 외부로 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 상수명 첫 문자는 "PC_" 로 시작
		//         - 전체를 영문 대문자로 하고 상수명이 긴 경우 '_'로 구분해서 명명
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		///<summary>공용(public) 상수 선언 예</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		public const string PC_HELLO = "Hello...";
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [전역(private) 변수/객체/핸들/구조체/컬렉션/델리게이트 - 클래스 내부만 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 첫 문자를 "mv_타입"/"mv_obj"/"mv_hwnd"/"mv_struc"/"mv_coll"/"mv_del" 로 시작
		//         - 영문 대소문자로 시작하고 변수명이 긴 경우 대소문자 구분해서 명명('_' 사용가능!)
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>전역(private) 변수 선언 예</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private string mv_sHello = null;
		//---------------------------------------------------------------------------------------------------
		//메인 폼 객체 핸들
		//---------------------------------------------------------------------------------------------------
		private frmMain mv_frmMain = null;									//Main 폼 인스턴스 핸들
		private frmProjects mv_frmProjects = null;							//Projects 폼 인스턴스 핸들
		private frmParts mv_frmParts = null;								//Parts 폼 인스턴스 핸들
		private ComCls.cFunction mv_oFunc = null;							//공용함수 인스턴스 핸들
		//---------------------------------------------------------------------------------------------------
		private string mv_sParentCID = null;
		private string mv_sParentOID = null;
		private DataGridView mv_oDataGridView = null;
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [공용(public) 변수/객체/핸들/구조체/컬렉션/델리게이트/이벤트 - 클래스 외부로 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 첫 문자를 "pv_타입"/"pv_obj"/"pv_hwnd"/"pv_struc"/"pv_coll"/"pv_del"/"pv_event" 로 시작
		//         - 영문 대소문자로 시작하고 변수명이 긴 경우 대소문자 구분해서 명명('_' 사용가능!)
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>공용(public) 변수 선언 예</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		public string pv_sHello = null;
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [공용(public) 속성(Property:읽기 쓰기 선택적 가능) - 클래스 외부로 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 첫 문자를 "pp_타입" 로 시작
		//         - 영문 대소문자로 시작하고 속성명이 긴 경우 대소문자 구분해서 명명('_' 사용가능!)
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>공용(public) 속성(Property) 선언 예</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		public string pp_bHello
		{
			get { return mv_sHello; }
			set { mv_sHello = value; }
		}
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [전역(private) 함수/API - 클래스 내부만 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 첫 문자를 "mf_" + 함수명 또는 API 함수명 으로 시작
		//         - 영문 대소문자로 시작하고 함수명이 긴 경우 대소문자 구분해서 명명('_' 사용가능!)
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>전역(private) 함수 선언 예</summary>
		/// <param name="sStr">전역(private) 함수 인자 선언 예</param>
		/// <returns>string</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private string mf_Hello(string sStr)
		{
			try
			{
				sStr = "Hello...";
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return sStr;
		}

		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>클래스 초기화</summary>
		/// <param name="objClass">클래스 객체 인스턴스</param>
		/// <returns>void</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private void mf_Init(frmCreateParts objClass)
		{
			try
			{
				//클래스 초기화
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>클래스 마무리</summary>
		/// <param name="objClass">클래스 객체 인스턴스</param>
		/// <returns>void</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private void mf_UnInit(frmCreateParts objClass)
		{
			try
			{
				//클래스 마무리
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>파트 넘버 생성</summary>
		/// <returns>string</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private string mf_MakePartNumber()
		{
			//---------------------------------------------------------------------------------------------------
			//Web Sql 실행 관련
			//---------------------------------------------------------------------------------------------------
			string sDataSet = null;
			DataSet oDataSet = null;
			string sWebSql = null;
			int nRowCount = 0;
			int nColCount = 0;
			string sErrorMsg = null;
			string sResult = null;

			try
			{
				sWebSql = ComCls.cConst.PC_WEBSQL_WEBPARSE_URL;
				sWebSql = sWebSql + string.Format("?{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}",
											ComCls.cConst.PC_WEBSQL_MODE, ComCls.cConst.PC_WEBSQL_MODE_R,
											ComCls.cConst.PC_WEBSQL_TYPE, ComCls.cConst.PC_WEBSQL_TYPE_PARSE,
											ComCls.cConst.PC_WEBSQL_STYLE, ComCls.cConst.PC_WEBSQL_STYLE_SP,
											ComCls.cConst.PC_WEBSQL_CMD_SP, "SP_PARTS_CREATE_PARTNUMBER",
											"iPATTERN", this.txtPartNumber.Text);


				if (this.mv_oFunc.pf_WpExecSql(ComCls.cConst.PE_WEBSQL_MODE.R, ComCls.cConst.PE_WEBSQL_TYPE.PARSE, sWebSql, ref sDataSet, ref oDataSet, ref nRowCount, ref nColCount, ref sErrorMsg) == true)
				{
					if (nRowCount == 1)
					{
						sResult = sDataSet;
					}
					else
					{
						ComCls.cException.MessageErrorBoxShow(this, string.Format("{0}건", nRowCount), ComCls.cConst.PC_MSG_APPBOM_UPDATE_TITLE);
					}
				}
				else
				{
					if (sErrorMsg != null)
					{
						ComCls.cException.ExceptionMessage(this, sErrorMsg, "mf_MakePartNumber()");
					}
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return sResult;
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Create Part Web Url 만들기</summary>
		/// <param name="sSPNAME">스토어드명</param>
		/// <param name="sJOBMODE">작업모드</param>
		/// <returns>string</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private string mf_MakeWeb_CreatePartUrl(string sSPNAME, string sJOBMODE)
		{
			string sWebUrl = null;
			string sWebArg = null;
			string sPartNumber = null;

			try
			{
				//---------------------------------------------------------------------------------------------------
				//Web Sql 경로 만들기
				//---------------------------------------------------------------------------------------------------
				sWebUrl = ComCls.cConst.PC_WEBSQL_WEBPARSE_URL;
				sPartNumber = this.mf_MakePartNumber();

				if (sPartNumber != null)
				{
					if (this.txtSpName.Text == "SP_PROJECTS_RELATEDPARTS_CUD")
					{
						sWebArg = string.Format("?{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}&{12}={13}&{14}={15}&{16}={17}&{18}={19}&{20}={21}&{22}={23}&{24}={25}&{26}={27}&{28}={29}&{30}={31}&{32}={33}&{34}={35}&{36}={37}&{38}={39}&{40}={41}&{42}={43}&{44}={45}&{46}={47}&{48}={49}&{50}={51}&{52}={53}",
													ComCls.cConst.PC_WEBSQL_MODE, ComCls.cConst.PC_WEBSQL_MODE_CUD,
													ComCls.cConst.PC_WEBSQL_TYPE, ComCls.cConst.PC_WEBSQL_TYPE_PARSE,
													ComCls.cConst.PC_WEBSQL_STYLE, ComCls.cConst.PC_WEBSQL_STYLE_SP,
													ComCls.cConst.PC_WEBSQL_CMD_SP, sSPNAME,
													"iJOBMODE", sJOBMODE,
													"iREL_OID", -1,
													"iPRJS_CID", Convert.ToInt32(this.txtParentCid.Text),
													"iPRJS_OID", Convert.ToInt32(this.txtParentOid.Text),
													"iITEMS_CID", -1,
													"iITEMS_OID", -1,
													"iPARTTYPE", this.txtPartTypeOid.Text,
													"iPARTLIBRARY", this.txtPartLibrary.Tag.ToString(),
													"iPARTNUMBER", sPartNumber,
													"iPARTNAME", this.txtPartName.Text,
													"iDESC", this.txtDescription.Text,
													"iREVISION", this.txtRevision.Text,
													"iUOM", ((string[])this.cmbUnitOfMeasure.Tag)[this.cmbUnitOfMeasure.SelectedIndex].ToString(),
													"iMAKERPNO", this.txtMakerPartNo.Text,
													"iMAKER", this.txtMakerOid.Text,
													"iMATERIAL", this.txtMaterialOid.Text,
													"iINSPECTION", ((string[])this.cmbInspection.Tag)[this.cmbInspection.SelectedIndex].ToString(),
													"iDETAILSPEC", this.txtDetailSpec.Text,
													"iUOW", ((string[])this.cmbUnitOfWeight.Tag)[this.cmbUnitOfWeight.SelectedIndex].ToString(),
													"iDIMENSION", this.txtDimension.Text,
													"iWEIGHT", this.txtWeight.Text,
													"iREMARK", this.txtRemark.Text,
													"iQTY", 1);
					}
					else if (this.txtSpName.Text == "SP_PARTS_BOM_CUD")
					{
						sWebArg = string.Format("?{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}&{12}={13}&{14}={15}&{16}={17}&{18}={19}&{20}={21}&{22}={23}&{24}={25}&{26}={27}&{28}={29}&{30}={31}&{32}={33}&{34}={35}&{36}={37}&{38}={39}&{40}={41}",
													ComCls.cConst.PC_WEBSQL_MODE, ComCls.cConst.PC_WEBSQL_MODE_CUD,
													ComCls.cConst.PC_WEBSQL_TYPE, ComCls.cConst.PC_WEBSQL_TYPE_PARSE,
													ComCls.cConst.PC_WEBSQL_STYLE, ComCls.cConst.PC_WEBSQL_STYLE_SP,
													ComCls.cConst.PC_WEBSQL_CMD_SP, sSPNAME,
													"iJOBMODE", sJOBMODE,
													"iPARTTYPE", this.txtPartTypeOid.Text,
													"iPARTLIBRARY", this.txtPartLibrary.Tag.ToString(),
													"iPARTNUMBER", sPartNumber,
													"iPARTNAME", this.txtPartName.Text,
													"iDESC", this.txtDescription.Text,
													"iREVISION", this.txtRevision.Text,
													"iUOM", ((string[])this.cmbUnitOfMeasure.Tag)[this.cmbUnitOfMeasure.SelectedIndex].ToString(),
													"iMAKERPNO", this.txtMakerPartNo.Text,
													"iMAKER", this.txtMakerOid.Text,
													"iMATERIAL", this.txtMaterialOid.Text,
													"iINSPECTION", ((string[])this.cmbInspection.Tag)[this.cmbInspection.SelectedIndex].ToString(),
													"iDETAILSPEC", this.txtDetailSpec.Text,
													"iUOW", ((string[])this.cmbUnitOfWeight.Tag)[this.cmbUnitOfWeight.SelectedIndex].ToString(),
													"iDIMENSION", this.txtDimension.Text,
													"iWEIGHT", this.txtWeight.Text,
													"iREMARK", this.txtRemark.Text);
					}
				}
				else
				{
					MessageBox.Show("Part Number 채번할 수 없습니다. 관리자에게 문의하십시오.");
				}
				sWebUrl += sWebArg;
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return sWebUrl;
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>항목 조회 Web Url 만들기 (ex. Unit Of Measure, Insepctiono, Unit Of Weight)</summary>
		/// <param name="sSPNAME">스토어드명</param>
		/// <param name="sCOMP">검색 컴포넌트 명</param>
		/// <param name="sCOMP2">검색 컴포넌트 명2</param>
		/// <returns>string</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private string mf_MakeWeb_ReadComboComponentUrl(string sSPNAME, string sCOMP)
		{
			string sWebUrl = null;
			string sWebArg = null;

			try
			{
				//---------------------------------------------------------------------------------------------------
				//Web Sql 경로 만들기
				//---------------------------------------------------------------------------------------------------
				sWebUrl = ComCls.cConst.PC_WEBSQL_WEBPARSE_URL;
				sWebArg = string.Format("?{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}",
											ComCls.cConst.PC_WEBSQL_MODE, ComCls.cConst.PC_WEBSQL_MODE_R,
											ComCls.cConst.PC_WEBSQL_TYPE, ComCls.cConst.PC_WEBSQL_TYPE_PARSE,
											ComCls.cConst.PC_WEBSQL_STYLE, ComCls.cConst.PC_WEBSQL_STYLE_SP,
											ComCls.cConst.PC_WEBSQL_CMD_SP, sSPNAME,
											"iCOMP", sCOMP);
				sWebUrl += sWebArg;
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return sWebUrl;
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>[Create Parts] Parts 추가</summary>
		/// <param name="sWebSql">mf_MakeWeb_CreatePartUrl 에서 만든 Web Url</param>
		/// <param name="nOid">받아온 nRowCount(실제 Items Oid)를 전달</param>
		/// <returns>bool</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private bool mf_CreateParts(string sWebSql, ref int nOid)
		{
			//---------------------------------------------------------------------------------------------------
			//Web Sql 실행 관련
			//---------------------------------------------------------------------------------------------------
			string sDataSet = null;
			DataSet oDataSet = null;
			int nRowCount = 0;
			int nColCount = 0;
			string sErrorMsg = null;
			bool nResultOK = false;

			try
			{
				nOid = -1;
				//---------------------------------------------------------------------------------------------------
				//Web Sql 실행
				//---------------------------------------------------------------------------------------------------
				if (this.mv_oFunc.pf_WpExecSql(ComCls.cConst.PE_WEBSQL_MODE.CUD, ComCls.cConst.PE_WEBSQL_TYPE.PARSE, sWebSql, ref sDataSet, ref oDataSet, ref nRowCount, ref nColCount, ref sErrorMsg) == true)
				{
					if (nRowCount > 0)
					{
						nOid = nRowCount;
						nResultOK = true;

						ComCls.cException.MessageBoxShow(this, ComCls.cConst.PC_MSG_APPBOM_UPDATE, ComCls.cConst.PC_MSG_APPBOM_UPDATE_TITLE);
					}
					else
					{
						if (nRowCount == -2)
						    ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_DUPLICATE_PARTS_ID, ComCls.cConst.PC_ERROR_DUPLICATE_PARTS_TITLE);
						else
							ComCls.cException.MessageErrorBoxShow(this, string.Format("{0}건", nRowCount), ComCls.cConst.PC_MSG_APPBOM_UPDATE_TITLE);
					}
				}
				else
				{
					if (sErrorMsg != null)
					{
						ComCls.cException.ExceptionMessage(this, sErrorMsg, "mf_CreateParts()");
					}
				}
				//---------------------------------------------------------------------------------------------------
			}
			catch (Exception ex)
			{
				throw ex;
			}
			//---------------------------------------------------------------------------------------------------
			//결과 반환
			//---------------------------------------------------------------------------------------------------
			return nResultOK;
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Create Part 창 콤보박스 값 </summary>
		/// <param name="oComboBox">결과 출력 콤보박스</param>
		/// <param name="sWebSql">mf_MakeWeb_ReadComboComponentUrl 에서 만든 Web Url</param>
		/// <returns>void</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private void mf_ReadComponentCombo(ComboBox oComboBox, string sWebSql)
		{
			//---------------------------------------------------------------------------------------------------
			//Web Sql 실행 관련
			//---------------------------------------------------------------------------------------------------
			string sDataSet = null;
			DataSet oDataSet = null;
			int nRowCount = 0;
			int nColCount = 0;
			string sErrorMsg = null;
			//---------------------------------------------------------------------------------------------------
			//Web Sql 결과 관련
			//---------------------------------------------------------------------------------------------------
			string[] saColSepa = new string[] { ComCls.cConst.PC_SEPARATOR_COL };
			string[] saRowSepa = new string[] { ComCls.cConst.PC_SEPARATOR_ROW };

			try
			{
				//---------------------------------------------------------------------------------------------------
				//Web Sql 실행
				//---------------------------------------------------------------------------------------------------
				if (this.mv_oFunc.pf_WpExecSql(ComCls.cConst.PE_WEBSQL_MODE.R, ComCls.cConst.PE_WEBSQL_TYPE.PARSE, sWebSql, ref sDataSet, ref oDataSet, ref nRowCount, ref nColCount, ref sErrorMsg) == true)
				{
					if (nRowCount > 0)
					{
						this.mv_oFunc.pf_WpOutputDataSetToComboBoxContainKey(ComCls.cConst.PE_WEBSQL_TYPE.PARSE, oComboBox, sDataSet, oDataSet, true);
					}
					else
					{
						oComboBox.Items.Clear();
						oComboBox.Items.Add("-[ERROR] 조회된 항목이 없습니다.-");
						oComboBox.SelectedIndex = 0;
					}
				}
				else
				{
					if (sErrorMsg != null)
					{
						ComCls.cException.ExceptionMessage(this, sErrorMsg, "mf_ReadComponentCombo()");
					}
				}
				//---------------------------------------------------------------------------------------------------
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				////---------------------------------------------------------------------------------------------------
				////Debug Agent 인스턴스 있는 경우
				////---------------------------------------------------------------------------------------------------
				//if (this.mv_frmMain.pv_frmDebugAgent != null)
				//{
				//    this.mv_frmMain.pv_frmDebugAgent.pf_OutputDebugInfo(ComCls.cConst.PE_WEBSQL_TYPE.PARSE, sWebSql, sDataSet, oDataSet);
				//}
				////---------------------------------------------------------------------------------------------------
			}

		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Parts > BOM에서 Create Part 된 부품을 BOM 그리드에 행 추가</summary>
		/// <param name="sJobmode">추가된 Part의 JobMode</param>
		/// <param name="nItemsOid">추가된 Part의 Oid</param>
		/// <returns>void</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		private void mf_AddRowBomGrid(string sJobmode, int nItemsOid)
		{
			string[] saDataSetCols = null;
			string sLevel = null;
			int nLevel = -1;
			try
			{
				saDataSetCols = new string[26];

				if (sJobmode.Contains("CREATE") == true)
				{
					sLevel = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Level"].Value.ToString();
					nLevel = int.Parse(sLevel.Replace("*", "")) + 1;
					sLevel = nLevel.ToString().PadLeft(nLevel, '*');

					saDataSetCols[0] = ComCls.cConst.PC_DB_JOBMODE_CREATE;													//Action
					saDataSetCols[1] = sLevel;																				//레벨
					saDataSetCols[2] = "false";																				//체크박스
					saDataSetCols[3] = nItemsOid.ToString();																//Items Oid (현재 등록되었던 Items Oid)
					saDataSetCols[4] = "1110";																				//Items Cid (현재 등록되었던 Items Oid)
					saDataSetCols[5] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Oid"].Value.ToString();			//부모 Item Oid(BOM에서 선택된 Items)
					saDataSetCols[6] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Cid"].Value.ToString();			//부모 Item Cid(BOM에서 선택된 Items)
					saDataSetCols[7] = "-10";																				//TreeOid
					saDataSetCols[8] = "2110";																				//TreeCid
					saDataSetCols[9] = "10";																				//SEQ
					saDataSetCols[10] = "1";																				//QTY
					saDataSetCols[11] = this.txtPartType.Text;																//Part Type
					saDataSetCols[12] = this.txtPartNumber.Text;															//Part Number
					saDataSetCols[13] = this.txtPartName.Text;																//Part Name
					saDataSetCols[14] = "Working";																			//State
					saDataSetCols[15] = this.txtMaker.Text;																	//Maker
					saDataSetCols[16] = this.txtMakerPartNo.Text;															//Model No
					saDataSetCols[17] = this.txtRevision.Text;																//Revision
					saDataSetCols[18] = this.txtMaterial.Text;																//Material
					saDataSetCols[19] = cmbInspection.SelectedItem.ToString();												//Inspection
					saDataSetCols[20] = this.txtDetailSpec.Text;															//Detail Spec
					saDataSetCols[21] = this.txtDimension.Text;																//Dimension
					saDataSetCols[22] = "관리자(admin)";																		//Created By
					saDataSetCols[23] = DateTime.Now.ToString();															//Creation Date
					saDataSetCols[24] = DateTime.Now.ToString();															//Modification Date
					saDataSetCols[25] = "";																					//Approval Date

					this.mv_oDataGridView.Rows.Add(saDataSetCols);
				}

				if (sJobmode.Contains("REPLACE") == true)
				{
					saDataSetCols[0] = ComCls.cConst.PC_DB_JOBMODE_UPDATE;													//Action
					saDataSetCols[1] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Level"].Value.ToString();		//레벨
					saDataSetCols[2] = "false";																				//체크박스
					saDataSetCols[3] = nItemsOid.ToString();																//Items Oid (현재 등록되었던 Items Oid)
					saDataSetCols[4] = "1110";																				//Items Cid (현재 등록되었던 Items Cid)
					saDataSetCols[5] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_ParOid"].Value.ToString();		//부모 Item Oid(BOM에서 선택된 Items의 부모Oid)
					saDataSetCols[6] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_ParCid"].Value.ToString();		//부모 Item Cid(BOM에서 선택된 Items의 부모Cid)
					saDataSetCols[7] = "-10";																				//TreeOid
					saDataSetCols[8] = "2110";																				//TreeCid
					saDataSetCols[9] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Seq"].Value.ToString();			//SEQ
					saDataSetCols[10] = this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Qty"].Value.ToString();			//QTY
					saDataSetCols[11] = this.txtPartType.Text;																//Part Type
					saDataSetCols[12] = this.txtPartNumber.Text;															//Part Number
					saDataSetCols[13] = this.txtPartName.Text;																//Part Name
					saDataSetCols[14] = "Working";																			//State
					saDataSetCols[15] = this.txtMaker.Text;																	//Maker
					saDataSetCols[16] = this.txtMakerPartNo.Text;															//Model No
					saDataSetCols[17] = this.txtRevision.Text;																//Revision
					saDataSetCols[18] = this.txtMaterial.Text;																//Material
					saDataSetCols[19] = cmbInspection.SelectedItem.ToString();												//Inspection
					saDataSetCols[20] = this.txtDetailSpec.Text;															//Detail Spec
					saDataSetCols[21] = this.txtDimension.Text;																//Dimension
					saDataSetCols[22] = "관리자(admin)";																		//Created By
					saDataSetCols[23] = DateTime.Now.ToString();															//Creation Date
					saDataSetCols[24] = DateTime.Now.ToString();															//Modification Date
					saDataSetCols[25] = "";																					//Approval Date

					this.mv_oDataGridView.Rows.Add(saDataSetCols);

					if (this.mv_oDataGridView.SelectedRows != null)
					{
						this.mv_oDataGridView.SelectedRows[0].Cells["dgvBom_Action"].Value = ComCls.cConst.PC_DB_JOBMODE_DELETE;
					}
				}

				this.mv_oDataGridView.Refresh();
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [공용(public) 함수(Method)/API - 클래스 외부로 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 첫 문자를 "pf_" + 함수명 또는 API 함수명 으로 시작
		//         - 영문 대소문자로 시작하고 함수명이 긴 경우 대소문자 구분해서 명명('_' 사용가능!)
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>공용(public) 함수(Method) 선언 예</summary>
		/// <param name="sStr">공용(public) 함수(Method) 인자 선언 예</param>
		/// <returns>string</returns>
		///-------------------------------------------------------------------------------------------------------------------------
		public string pf_Hello(string sStr)
		{
			try
			{
				sStr = "Hello...";
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return sStr;
		}
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
		#region [전역(private) 시스템 이벤트함수 - 클래스 내부만 노출]
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		//명명규칙 - 없음!
		//▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>폼 로드 될 때 발생</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void frmCreateParts_Load(object sender, EventArgs e)
		{
			try
			{
				//---------------------------------------------------------------------------------------------------
				//공용함수 인스턴스 생성
				//---------------------------------------------------------------------------------------------------
				this.mv_oFunc = new ComCls.cFunction(this);
				this.txtParentCid.Text = this.mv_sParentCID;
				this.txtParentOid.Text = this.mv_sParentOID;
				//---------------------------------------------------------------------------------------------------
				//콤보 데이터 (Inspection & Unit Of Weight & Unit Of Measure) 읽어오기
				//---------------------------------------------------------------------------------------------------
				this.mf_ReadComponentCombo(this.cmbUnitOfMeasure, this.mf_MakeWeb_ReadComboComponentUrl("SP_PARTS_COMPONENT_R", "UOM"));
				this.mf_ReadComponentCombo(this.cmbInspection, this.mf_MakeWeb_ReadComboComponentUrl("SP_PARTS_COMPONENT_R", "Inspection"));
				this.mf_ReadComponentCombo(this.cmbUnitOfWeight, this.mf_MakeWeb_ReadComboComponentUrl("SP_PARTS_COMPONENT_R", "UOW"));
				//---------------------------------------------------------------------------------------------------
				//첫 등록 파트 리비전 A로 셋팅
				//---------------------------------------------------------------------------------------------------
				this.txtRevision.Text = "A";
				this.txtRevision.ReadOnly = true;
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>PartType 입력 창 클릭 시 </summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void txtPartType_MouseClick(object sender, MouseEventArgs e)
		{
			try
			{
				frmSearchCodeList ofrmSearchCodeList = new frmSearchCodeList(this.txtPartType, this.txtPartTypeOid, "Part Type");
				ofrmSearchCodeList.ShowDialog();
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Part Library 입력 창 클릭 시 </summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void txtPartLibrary_MouseClick(object sender, MouseEventArgs e)
		{
			try
			{
				if (string.IsNullOrEmpty(this.txtPartType.Text) != true && string.IsNullOrEmpty(this.txtPartTypeOid.Text) != true)
				{
					frmSearchCodeTree ofrmSearchCodeTree = new frmSearchCodeTree(this.mv_frmMain, this.txtPartLibrary, this.txtPartNumber, Convert.ToInt32(this.txtPartTypeOid.Text));
					ofrmSearchCodeTree.ShowDialog();
				}
				else
				{
					MessageBox.Show("Part Type을 먼저 선택하십시오.");
				}
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Part Name 입력 창 클릭 시 </summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void txtPartName_MouseClick(object sender, MouseEventArgs e)
		{
			try
			{
				frmSearchCodeList ofrmSearchCodeList = new frmSearchCodeList(this.txtPartName, null, "PartName");
				ofrmSearchCodeList.ShowDialog();
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Material 입력 창 클릭 시 </summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void txtMaterial_MouseClick(object sender, MouseEventArgs e)
		{
			try
			{
				frmSearchCodeList ofrmSearchCodeList = new frmSearchCodeList(this.txtMaterial, this.txtMaterialOid, "Material");
				ofrmSearchCodeList.ShowDialog();
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Maker 입력 창 클릭 시 </summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void txtMaker_MouseClick(object sender, MouseEventArgs e)
		{
			try
			{
				frmSearchCodeList ofrmSearchCodeList = new frmSearchCodeList(this.txtMaker, this.txtMakerOid, "Maker");
				ofrmSearchCodeList.ShowDialog();
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>OK(저장) 버튼 클릭 시</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void btnOk_Click(object sender, EventArgs e)
		{
			string sWebUrl = null;
			bool bResult = false;
			int nOid = -1;

			try
			{
				//---------------------------------------------------------------------------------------------------
				//필수 입력 항목 값 Null 체크
				//---------------------------------------------------------------------------------------------------
				// Part Type 체크
				if (string.IsNullOrEmpty(this.txtPartType.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_TYPE, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Part Number 체크
				else if (string.IsNullOrEmpty(this.txtPartNumber.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_NUMBER, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Part Library 체크
				else if (string.IsNullOrEmpty(this.txtPartLibrary.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_LIBRARY, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Part Name 체크
				else if (string.IsNullOrEmpty(this.txtPartName.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_NAME, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// UOM 코드 값 체크
				else if (this.cmbUnitOfMeasure.SelectedItem.ToString().Contains("ERROR") == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_UOM, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Inspection 코드 값 체크
				else if (this.cmbInspection.SelectedItem.ToString().Contains("ERROR") == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_INSPECTION, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// UOW 코드 값 체크
				else if (this.cmbUnitOfWeight.SelectedItem.ToString().Contains("ERROR") == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_UOW, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				else
				{
					if (ComCls.cException.MessageConfirmBoxShow(this, string.Format("[{0}] {1}{2}", this.txtPartNumber.Text, this.txtPartName.Text,
						ComCls.cConst.PC_MSG_CREATE_PARTS), ComCls.cConst.PC_MSG_CREATE_PARTS_TITLE) == System.Windows.Forms.DialogResult.Yes)
					{
						//---------------------------------------------------------------------------------------------------
						//URL 만들기
						//---------------------------------------------------------------------------------------------------
						sWebUrl = this.mf_MakeWeb_CreatePartUrl(this.txtSpName.Text, this.txtJobMode.Text);
						//---------------------------------------------------------------------------------------------------
						// URL 작업 실행
						//---------------------------------------------------------------------------------------------------
						if (this.mf_CreateParts(sWebUrl, ref nOid) == true)
						{
							bResult = true;
							if (this.mv_frmProjects != null)
								this.mv_frmProjects.mf_ReadRelatedPartGridView(Convert.ToInt32(this.txtParentCid.Text), Convert.ToInt32(this.txtParentOid.Text), "");
							if (this.mv_frmParts != null)
							{
								if (nOid > 0)
								{
									this.mf_AddRowBomGrid(this.txtJobMode.Text, nOid);
								}
							}
						}
					}
					//---------------------------------------------------------------------------------------------------
					//성공 시 창 닫기
					//---------------------------------------------------------------------------------------------------
					if (bResult == true)
					{
						this.Close();
					}
				}
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Apply(적용) 버튼 클릭 시</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void btnApply_Click(object sender, EventArgs e)
		{
			string sWebUrl = null;
			bool bResult = false;
			int nOid = -1;

			try
			{
				//---------------------------------------------------------------------------------------------------
				//필수 입력 항목 값 Null 체크
				//---------------------------------------------------------------------------------------------------
				// Part Type 체크
				if (string.IsNullOrEmpty(this.txtPartType.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_TYPE, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Part Number 체크
				else if (string.IsNullOrEmpty(this.txtPartNumber.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_NUMBER, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Part Library 체크
				else if (string.IsNullOrEmpty(this.txtPartLibrary.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_LIBRARY, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Part Name 체크
				else if (string.IsNullOrEmpty(this.txtPartName.Text) == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_NAME, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// UOM 코드 값 체크
				else if (this.cmbUnitOfMeasure.SelectedItem.ToString().Contains("ERROR") == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_UOM, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// Inspection 코드 값 체크
				else if (this.cmbInspection.SelectedItem.ToString().Contains("ERROR") == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_INSPECTION, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				// UOW 코드 값 체크
				else if (this.cmbUnitOfWeight.SelectedItem.ToString().Contains("ERROR") == true)
				{
					ComCls.cException.MessageErrorBoxShow(this, ComCls.cConst.PC_ERROR_NO_PARTS_UOW, ComCls.cConst.PC_ERROR_NO_PARTS_PROPERTY_TITLE);
				}
				else
				{
					if (ComCls.cException.MessageConfirmBoxShow(this, string.Format("[{0}] {1}{2}", this.txtPartNumber.Text, this.txtPartName.Text,
						ComCls.cConst.PC_MSG_CREATE_PARTS), ComCls.cConst.PC_MSG_CREATE_PARTS_TITLE) == System.Windows.Forms.DialogResult.Yes)
					{
						//---------------------------------------------------------------------------------------------------
						//URL 만들기
						//---------------------------------------------------------------------------------------------------
						sWebUrl = this.mf_MakeWeb_CreatePartUrl(this.txtSpName.Text, this.txtJobMode.Text);
						//---------------------------------------------------------------------------------------------------
						// URL 작업 실행
						//---------------------------------------------------------------------------------------------------
						if (this.mf_CreateParts(sWebUrl, ref nOid) == true)
						{
							bResult = true;
							if (this.mv_frmProjects != null)
								this.mv_frmProjects.mf_ReadRelatedPartGridView(Convert.ToInt32(this.txtParentCid.Text), Convert.ToInt32(this.txtParentOid.Text), "");
							if (this.mv_frmParts != null)
							{
								if (nOid > 0)
								{
									this.mf_AddRowBomGrid(this.txtJobMode.Text, nOid);
								}
							}
						}
					}
					//---------------------------------------------------------------------------------------------------
					//성공 시 파트넘버 부분 초기화
					//---------------------------------------------------------------------------------------------------
					if (bResult == true)
					{
						this.txtPartNumber.Text = null;
					}
				}
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		///-------------------------------------------------------------------------------------------------------------------------
		/// <summary>Cancel(취소) 버튼 클릭 시</summary>
		///-------------------------------------------------------------------------------------------------------------------------
		private void btnCancel_Click(object sender, EventArgs e)
		{
			try
			{
				if (ComCls.cException.MessageConfirmBoxShow(this, ComCls.cConst.PC_MSG_CREATE_PARTS_CANCEL, ComCls.cConst.PC_MSG_CREATE_PARTS_TITLE) == System.Windows.Forms.DialogResult.Yes)
				{
					this.Close();
				}
			}
			catch (Exception ex)
			{
				ComCls.cException.ExceptionMessageBox(ex, this);
			}
		}
		#endregion

		//▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
	}// End class frmCreateParts
}// End namespace TimsXBX
